In conventional television or radio broadcasting, one or more transmitters broadcast electromagnetic signals encoded with audio and/or video information. The signals are transmitted over predetermined frequency bands, e.g., determined in the United States by the Federal Communications Commission (FCC). A receiver tuned to receive signals broadcast in a particular frequency band converts the received signals into audio and/or video signals which are output to a user. In such a broadcasting model, the number of receivers that may simultaneously receive a broadcast signal is proportional to the signal's power. That is, as the broadcast signal's power is increased, a larger number of receivers can receive the signal.
Similarly, the same principles are also believed to be true with cable TV broadcasts. A cable TV provider transmits a cable signal through physical cables installed within its broadcasting “territory.” The number of viewers capable of receiving the transmitted signal is defined by the signal's power and the geographical distribution of the installed cables. More specifically, more viewers can receive the cable TV signal as the power of the signal is increased. Accordingly, one or more cable “repeaters” are often installed within a provider's territory to increase the power of the provider's cable TV signal.
In contrast to the broadcasting models above, the situation is different with multimedia broadcast over a computer network, such as the Internet. Specifically, the number of users that may simultaneously receive a media data stream broadcast over the network cannot be increased by increasing the power of the transmitted data stream. Instead, the number of users that receive the data stream is typically limited by the available bandwidth of the broadcasting server. In this context, the media data stream is a digitized form of video, audio, or other multimedia that may be broadcast over the network and presented to a user.
For example, suppose a broadcasting server can transmit a “live” Internet data stream at a maximum output bit rate (“bandwidth”) of 1 Gigabit per second (Gbps). As used herein, the live stream is received by the server in real-time from an outside media source, and the stream is re-transmitted by the server before being stored in some form of mass storage medium. If the live stream is simultaneously broadcast from the server to a plurality of users capable of receiving data at a maximum bit rate equal to 1 Megabit per second (Mbps), then the server is limited to broadcasting the stream to 1000 users or less (1 Gbps available/1 Mbps per user=1000 users). Thus, unlike other traditional forms of broadcasting, the server cannot transmit the live stream to more than 1000 users simply by transmitting the stream at a higher power.
In general, the broadcasting server communicates with one or more clients in the network according to a client/server model of information delivery. In this model, the client may comprise an application, such as a conventional web browser, executing on a computer that “connects” to the server over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request a data stream from the server by issuing messages, usually in the form of packets, to the server.
The server is a computer that provides a requested media data stream to one or more clients. The media data stream may be stored in a data storage medium, such as a magnetic disk, attached to the server. In this case, the server may be a file server (“filer”) configured to provide file service relating to the information stored in its attached storage devices. Alternatively, rather than storing the data stream in a form of mass storage medium attached to the server, the data stream may reside in the server's memory or buffer cache. Thus, the server may be configured as a “network cache” that provides clients access to media data streams stored in its “in-core” memory, i.e., random-access memory (RAM). For instance, the server may be configured to implement Netcache™, by Network Appliance, Inc. of Sunnyvale, Calif., a proprietary application that manages file access requests for information stored in a computer's in-core memory.
Client requests for a server's media data stream are typically formatted in accordance with a streaming data protocol, such as the Real Time Streaming Protocol (RTSP) or the Microsoft Media Server (MMS) protocol. These protocols enable clients to request that the server PLAY, PAUSE, RECORD, etc. a particular media data stream. For example, client messages formatted in accordance with the RTSP protocol are described in more detail in RFC 2326, entitled “Real Time Streaming Protocol (RTSP),” which is hereby incorporated by reference as though fully set forth herein.
As noted, the number of clients that may receive a server's media data stream is limited by the bandwidths of the server and clients. In addition, the bandwidths of other intermediate network devices, such as routers, switches, and the like, can further limit the number of clients with which the server can communicate. As is known, packets transmitted from a broadcasting server may be forwarded to one or more intermediate network devices before they reach their destination, e.g., a client. The intermediate devices are generally used to ensure that the packets are routed to their destinations in an efficient manner. More specifically, the devices are often configured to adjust routing information stored in network headers, e.g., Transmission Control Protocol/Internet Protocol (TCP/IP) headers, pre-pended to the packets. In this manner, the intermediate devices route the packets through the network along routes having relatively less network “traffic” than other alternate routes.
Intermediate network devices typically have internal buffer memories that store in-coming packets. An intermediate device's buffer is used to temporarily store received data packets when the device receives in-coming packets at a rate greater than the rate at which the device outputs data packets. For example, in-coming packets may be received by an intermediate device at 100 kilobits per second (kbps), although the device outputs processed packets at a rate of only 90 kbps. In this situation, the device's buffer memory stores increasing amounts of received data until the rate it receives in-coming packets becomes less than the rate at which it outputs packets.
The number of clients connected to a broadcasting server therefore may be limited by the size of the buffer memories in one or more intermediate network devices. That is, when the server broadcasts media data stream packets to a large number of clients, packets transmitted from the server may be dropped by an intermediate device when the device's buffer memory is full. As a result, the data streams received at the server's destination clients may be degraded in quality and/or smoothness.
It is therefore generally desirable to avoid surges of media stream data packets broadcast from a server, thereby preventing the “overloading” of resources, e.g., buffer memories and bandwidths, in intermediate devices through which the packets are forwarded. Further, it is desirable for the server to transmit client-requested data packets without excessive consumption of its own resources, such as its central processing unit (CPU) bandwidth.